% Zur Verfügung gestellt von Johannes Woske, IT2010, j.woske@gmail.com
\documentclass[
	12pt, %Schriftgröße
	a4paper,
	liststotoc, %Inhaltsverzeichniseinträge für Listen (z.B. Abbildungen)
	bibtotoc, %Inhaltsverzeichniseinträge f+r Quellen
	pointlessnumbers, %Entfernt Punkt hinter Gliederungsnummern
	ngerman, %Sprachpaket
	%headsepline, %Headertrennlinie
	%footsepline, %Footertrennlinie
	oneside %einseitiges Druckformat
	]{scrartcl} %Dokumentenklasse (Koma-Script)
\usepackage[T1]{fontenc}
\usepackage{nameref}
\usepackage{fancyhdr}
\usepackage[hyphens]{url}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{tocloft}
\usepackage[table]{xcolor}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{fancyhdr}
\usepackage{url}
\usepackage[onehalfspacing]{setspace}
\usepackage{graphicx} %Bilder einfügen
\usepackage[a4paper, margin=1in]{geometry}
\usepackage[right]{eurosym} %Euro-Zeichen
\usepackage{amssymb}
\usepackage{chngpage}
\usepackage[ 
   colorlinks,        % Links ohne Umrandungen in zu wählender Farbe 
   linkcolor=black,   % Farbe interner Verweise 
   filecolor=black,   % Farbe externer Verweise 
   citecolor=black,    % Farbe von Zitaten 
   urlcolor=black,	% Farbe von Links
   ]{hyperref} %Verlinkungen
\usepackage[ngerman]{translator}
\usepackage{blindtext} % Lorem-Ipsum-Plugin
%Glossar-Paket laden
\usepackage[
	nonumberlist, %keine Seitenzahlen anzeigen
	%acronym,      %ein Abkürzungsverzeichnis erstellen
	toc,          %Einträge im Inhaltsverzeichnis
	section      %im Inhaltsverzeichnis auf section-Ebene erscheinen
	]
{glossaries}
\usepackage{float}
\usepackage{acronym}
\restylefloat{table}
\tocloftpagestyle{fancy}
\usepackage[numbers, comma]{natbib} %Quellenangaben
\usepackage{multibib}
\newcites{internet}{Internet}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% Studienarbeit
\newcommand{\type}{Studienarbeit}
%%%%%%%%%%%% Thema
\newcommand{\topic}{Copy und Paste zwischen verschiedenen Smartphones }
%%%%%%%%%%%% Erstgutachter
\newcommand{\erstGutachter}{Herr Kalkbrenner}
%%%%%%%%%%%% Zweitgutachter
\newcommand{\zweitGutachter}{Frau ???}
%%%%%%%%%%%% Jahrgang
\newcommand{\jahrgang}{IT2011}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% Studentenname
\newcommand{\studentNameA}{Boris Goldshteyn}
%%%%%%%%%%%% Typ der Arbeit
\newcommand{\matrikelA}{633712}
%%%%%%%%%%%% Betrieb
\newcommand{\companyA}{Bayer Pharma AG}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% Studentenname
\newcommand{\studentNameB}{Clemens Wagner}
%%%%%%%%%%%% Typ der Arbeit
\newcommand{\matrikelB}{665250}
%%%%%%%%%%%% Betrieb
\newcommand{\companyB}{Samuelson Kassensysteme GmbH}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% Studentenname
\newcommand{\studentNameC}{Christian Wolter}
%%%%%%%%%%%% Typ der Arbeit
\newcommand{\matrikelC}{695136}
%%%%%%%%%%%% Betrieb
\newcommand{\companyC}{Berliner Stadtreinigung}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{listings,xcolor} %Codeanzeige
\definecolor{dkgreen}{rgb}{0,.6,0}
\definecolor{dkblue}{rgb}{0,0,.6}
\definecolor{dkyellow}{cmyk}{0,0,.8,.3}

\lstset{
    numbers=left, 
    numberstyle=\tiny, 
    numbersep=5pt,
    breaklines=true,
    frame=single,
    escapeinside={(*@}{@*)}, %nicht anzuzeigende Ausdrücke, z.B. für Labels
    language=sh,
    basicstyle=\ttfamily\fontsize{10}{12}\selectfont,
    keywordstyle    = \color{dkblue},
    stringstyle     = \color{red},
    identifierstyle = \color{dkgreen},
    commentstyle    = \color{gray},
    emph            =[1]{php},
    emphstyle       =[1]\color{black},
    emph            =[2]{if,and,or,else},
    emphstyle       =[2]\color{dkyellow}
    } 

% Seitenabstände definieren
\geometry{verbose,tmargin=3cm,bmargin=3cm,lmargin=3cm,rmargin=2cm} 

% Hurenkinder und Schusterjungen verhindern (Ja, das heißt wirklich so!!!)
\clubpenalty = 10000 \widowpenalty = 10000 \displaywidowpenalty = 10000 

\newcommand{\footfigref}[1]{\footnote{Abbildung \ref{#1} auf Seite \pageref{#1}}}

\newcommand{\citeurl}[1]{vgl. \citep{#1}}

\newcommand{\foottableref}[1]{\footnote{Tabelle \ref{#1} auf Seite \pageref{#1}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%falsche Default-Silbentrennung überschreiben
\include{hyphenation}


%Den Punkt am Ende jeder Beschreibung deaktivieren
\renewcommand*{\glspostdescription}{}

%Glossar-Befehle anschalten
\makeglossaries

%Diese Befehle sortieren die Einträge in den
%einzelnen Listen:
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
%makeindex -s datei.ist -t datei.slg -o datei.syi datei.syg

\include{glossar}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Dokumenteninhalt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\pagenumbering{Roman}%römische Seitenzahlen

\begin{titlepage}
\begin{center}
\begin{singlespace}
	\includegraphics[scale=0.6]{bilder/logo.png}\\\vspace{1cm}
	\textbf{{\LARGE \type\\\vspace{1cm}}
	{\huge \topic \\\vspace{2cm}}}
\end{singlespace}
	\begin{adjustwidth}{-2cm}{-2cm}
	\begin{tabularx}{\textwidth}{p{6cm}|p{6cm}|p{6cm}}
	\centering
	{\large \textbf{\studentNameA}}\linebreak
	Matr.Nr.: \matrikelA\linebreak
	\companyA &
	\centering
	{\large \textbf{\studentNameB}}\linebreak
	Matr.Nr.: \matrikelB\linebreak
	\companyB &
	\centering
	{\large \textbf{\studentNameC}}\linebreak
	Matr.Nr.: \matrikelC\linebreak
	\companyC	
	\end{tabularx}
	\end{adjustwidth}
	\vspace{3cm}\large	
	\begin{tabular}{l l}
	
		\textbf{Gutachter:} & \erstGutachter \tabularnewline
		\textbf{Studienjahrgang:} & \jahrgang \tabularnewline
	    \textbf{Fachrichtung:} & Informatik \tabularnewline
	    \textbf{Studienbereich:} & Technik \tabularnewline
	    \textbf{Fachbereich:} & FB 2 -  Duales Studium  \tabularnewline
	    \textbf{Wörter: } & ca. 8500 \tabularnewline
		\end{tabular}
\end{center}
\end{titlepage}
 
%******************Kopf und Fußzeile************
\pagestyle{fancy}
\fancyhf{}
\setlength{\headheight}{15pt}
\fancyhead[C]{\title}
\fancyfoot[R]{\thepage}
\renewcommand{\headrulewidth}{0.5pt}
\renewcommand{\footrulewidth}{0.5pt}
%***********************************************

\renewcommand{\arraystretch}{1.5}

\clearpage

\section*{Verfassung der Studienarbeit}
\addcontentsline{toc}{section}{Verfassung der Studienarbeit}

Diese Arbeit wurde von allen drei Autoren zu gleichen Teilen verfasst. Auf eine genaue Kennzeichnung der einzelnen Abschnitte dieser Studienarbeit wird deshalb verzichtet.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Abstract
\clearpage
\section*{Kurzfassung}
\addcontentsline{toc}{section}{Kurzfassung}

Zur gegenwärtigen Zeit sind Smartphones nicht mehr wegzudenken. Die Bezeichnung umfasst Handys mit besonders leistungsfähiger Hardware. Da diese Geräte mit kleinen Computern vergleichbar sind, haben sie auch ein komplexes Betriebssystem.

Häufig möchten Smartphonebenutzer Dateien, Filme, Musik und Programme austauschen. Dieser Vorgang gestaltet sich oftmals kompliziert und man wünscht sich eine intuitivere Bedienung. Ein simpler Kopiervorgang - Copy \& Paste - wie beim Windows-Computer wäre ideal.
Deshalb verfolgt dieses Projekt die Schaffung einer Applikation (App), die dieses Konzept umsetzt.

Nach der Analyse des Problems wird Grundlagenforschung betrieben. Es muss eines der vorhandenen gängigen Betriebssysteme als Basis ausgewählt werden. Das Bedienkonzept muss spezifiziert werden. Das beinhaltet sowohl die Bedienung auf Sender-, als auch auf Empfängerseite. Außerdem muss eine Übertragungstechnik bestimmt werden, die den vorher festgelegten Kriterien entspricht.

Anschließend wird in der Entwurfsphase die Architektur entwickelt und das Design der grafischen Oberfläche entworfen.

Die umfangreiche Implementierungsphase setzt die geplanten Funktionalitäten und Spezifikationen in einen lauffähigen Programmcode um. Hierbei werden auch einige Besonderheiten von Android, dem ausgewählten Betriebssystem, erläutert.
Danach folgt eine Evaluation. Mithilfe einer Umfrage werden Schwachpunkte des Prototypen ermittelt, um diese für zukünftige Weiterentwicklungen zu dokumentieren.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Inhaltsverzeichnis
\clearpage
\addcontentsline{toc}{section}{Inhaltsverzeichnis}

%Inhaltsverzeichnis anpasssen
\renewcommand{\cftbeforesecskip}{2pt}
\renewcommand{\cftsecdotsep}{\cftdotsep}
%\renewcommand{\cftsubsecfont}{\cftsecfont}
\renewcommand{\cftsecfont}{\cftsubsecfont} %neu
\renewcommand{\cftsubsecleader}{\cftsecleader}
%\renewcommand{\cftsubsecpagefont}{\cftsecpagefont}
\renewcommand{\cftbeforesubsecskip}{\cftbeforesecskip}
%\renewcommand{\cftsubsubsecfont}{\cftsecfont}
\renewcommand{\cftsubsubsecleader}{\cftsecleader}
%\renewcommand{\cftsubsubsecpagefont}{\cftsecpagefont}

\clearpage
\tableofcontents


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Abbildungsverzecihnis
\clearpage
\listoffigures
\addcontentsline{toc}{section}{Abbildungsverzeichnis}

\listoftables
\addcontentsline{toc}{section}{Tabellenverzeichnis}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Glossar ausgeben
\clearpage
\printglossary[style=altlist,title=Glossar]
%alle Einträge anzeigen
\glsaddall


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% Abkürzungen ausgeben
\clearpage

\section*{Abkürzungsverzeichnis}
\addcontentsline{toc}{section}{Abkürzungsverzeichnis}
\begin{acronym}[\hspace{3cm}]
\renewcommand{\bflabel}[1]{\normalfont{\normalsize{#1}}\dotfill}

\acro{IT}{Informationstechnik}
\acro{SDK}{Software Developement Kit}
\acro{NFC}{Near Field Communication}
\acro{URL}{Uniform Resource Locator}
\acro{UML}{Unified Modeling Language}
\acro{XML}{Extensible Markup Language}
\acro{ADB}{Android Debug Bridge}
\acro{TFS}{Team Foundation Server}
\acro{GUI}{Graphical User Interface}
\acro{MIME}{Multipurpose Internet Mail Extensions}
\acro{WYSIWYG}{What you see is what you get}
\acro{APK}{Application package file}
\acro{LE}{Low Energy}
\acro{EAN}{European Article Number}



\renewcommand{\bflabel}[1]{#1 \hfill}
\end{acronym}

\clearpage

%römische Seitennummer speichern
\newcounter{romCount}
\setcounter{romCount}{\value{page}}
%arabische Seitenzahlen
\pagenumbering{arabic}
%*****************************************
%*********************INHALT**************
%*********************ANFANG**************
\let\stdsection\section
\renewcommand\section{\newpage\stdsection}
\section{Einleitung}

Der Absatz und die Nutzung der mobilen Endgeräte mit einer hohen Computerfunktionalität, auch Smartphone genannt, ist in den letzten Jahren drastisch gestiegen. Ende 2012 gab es weltweit 740 Millionen Geräte - davon alleine 31 Millionen hier in Deutschland. Somit besitzt mehr als jeder Dritte deutsche Mitbürger ein Smartphone, das sind über 50\% aller Handynutzer in Deutschland. 
\citep{on:statistik-smartphones}

Diese Zahlen führen zu einer hohen Zahl von Entwicklern, die Applikationen für diese Geräte schreiben. Die Anzahl solcher Applikationen, die in der Kurzform Apps genannt werden, ist im Google Playstore bis 2013 auf 850000 - im Apple Store auf sogar 900000 gestiegen.
\citep{on:anzahl-apps}

Im Rahmen des Informatikstudiums an der Hochschule für Wirtschaft und Recht in Berlin soll eine Applikation entwickelt werden, die das von einem herkömmlichen Computer bekannte Konzept des Copy\&Paste auf das Smartphone überträgt. Die Idee ist, eine intuitive Bedienung nicht nur zwischen den Applikationen eines Gerätes zu erlauben, sondern die Erweiterung auf das Übertragen von Daten und Dateien zwischen mehreren verschiedenen Geräten.
\section{Analyse}


\subsection{Problemstellung}

Häufig möchten Smartphone-Nutzer einen URL-Link, Text oder kleine Dateien miteinander austauschen. Dieser Vorgang soll schnell ablaufen. Außerdem sollten auch keine komplizierten Bedienungsschritte notwendig sein. Nicht jeder Smartphone-Besitzer verfügt über weitreichende IT-Kenntnisse und ist in der Lage, ein aufwändiges Procedere zum versenden einer Datei durchzuführen.

Für das Versenden von Texten und Dateien gibt es bereits Applikationen. Nennenswert sind an dieser Stelle internetbasierte Chat-Anwendungen (z.B. WhatsApp), internetbasierte Cloud-Speicherdienste (z.B. Dropbox) und auch betriebssystemeigene Möglichkeiten zum Versenden von Dateien, zum Beispiel via Bluetooth oder NFC.

Jedoch erlauben diese keine konsequent einfache Bedienung. Bei einer Chat-Anwendung muss eine zu versendende Datei erst in der Applikation ausgewählt werden und ein Text muss kopiert und anschließend im Chat wieder eingefügt werden.

Bei einem Cloud-Speicherdienst muss das zu versendende Medium eine Datei sein, die in der Cloud gespeichert wird. Anschließend muss ein Download-Link dem empfangenden Smartphone übermittelt werden. An diesem Punkt scheitert ein Cloud-Speicherdienst bei der Usability.
Die betriebssystemeigenen Möglichkeiten beschränken sich auf Dateien. Ein kopierter Text kann nicht, ohne als Text-Datei vorzuliegen, versandt werden.

Wünschenswert wäre für dieses Problem eine Copy\&Paste-Funktion zwischen mehreren Smartphones. Auf einem Gerät wird ein Medium kopiert und auf dem empfangenden Gerät eingefügt.

\subsection{Problemanalyse}

Für das in 2.1 beschriebene Problem gibt es schon einige Lösungsansätze. Zum Einen existiert das von Google selbst angebotene neue Feature AndroidBeam, welches die Technik des NFC nutzt. Dieses bietet die Möglichkeit sehr einfach und schnell Webseiten, Texte und Dateien zwischen Smartphones mit der neuesten Android Version und einem NFC-Chip untereinander auszutauschen.
Zum Anderen existieren schon einige Apps, die das Konzept des Copy\&Paste aufgreifen. Hierbei wird auf die Applikation \glqq ClipPick\grqq~verwiesen. Das ist eine Anwendung für alle Arten von mobilen Geräten und auch für den PC. Hierbei wird genau dieses einfache Copy\&Paste Konzept umgesetzt, indem es in erster Linie Texte, aber auch Screenshots und andere Dateitypen via Cloud auf ein anderes Gerät direkt in die Zwischenablage verschickt. Dabei müssen beide Geräte in der Cloud angemeldet sein und über eine aktive Internetverbindung verfügen.
\citep{on:clippick}

Unsere Lösung sollte keine schon vorhandene kopieren oder ersetzen, sondern alle verfügbaren Techniken und alle vorhandene Lösungen mit einem simplen und sicheren Bedienungskonzept vereinen und eine neue Applikation schaffen, die keine Einschränkungen, keine besondere Kenntnis und keine weiteren Anwendungen seitens des Benutzers braucht.

Das Augenmerk muss dabei auf der intuitiven Bedienbarkeit liegen. Unter diesen Gesichtspunkt muss die optimale Technologie ausgewählt und das optimale Bedienkonzept entwickelt werden. Die Umsetzung sollte das Konzept des Copy\&Paste möglichst nahtlos umsetzen. Als Orientierung dient hier das Copy\&Paste Prinzip, wie es unter Windows 7 implementiert ist. Ein Text oder eine Datei wird ausgewählt und durch einen Rechtsklick im Kontextmenü der Punkt Kopieren ausgewählt. Navigiert man nun zu der Stelle, an der das Dokument oder der Text eingefügt werden soll, gelingt dies über den Kontextmenüpunkt \glqq Einfügen\grqq. Auch die meisten Smartphone Betriebssysteme implementieren bereits eine Copy\&Paste Funktionalität. So ist es z.B. bei Android und iOS möglich, durch langes Antippen eines Textes ein Kontextmenü aufzurufen, über welches sich der Text in die systemeigene Zwischenablage legen lässt. Dieser Text kann ebenfalls wieder über das Kontextmenü an anderer Stelle eingefügt werden. Eine Möglichkeit, diesen Text an ein anderes Smartphone zu schicken, bietet jedoch kein Betriebssystem. Somit muss das Copy\&Paste Konzept dahingehen erweitert werden, dass Texte ebenfalls auf anderen mobilen Telefonen eingefügt werden können, ohne den Workflow des Benutzers zu unterbrechen. 

\section{Konzeptioneller Entwurf}

In der Entwurfsphase der Applikation war es für das Team notwendig einige Studien durchzuführen, um sich auf die Art und Weise der Funktion und Nutzung der Anwendung zu einigen. Daraus sollte eine strukturierte Planung hervorgehen, die wie bei einem iterativen Vorgehensmodell die einzelnen Schritte der Entwicklung festlegt.

\subsection{Betriebssystemstudie}

Einer der ersten Punkte war es, sich auf ein Betriebssystem zu einigen. Zur Auswahl standen alle uns bekannten, und bei Smartphones noch in Verwendung befindliche Betriebssysteme. Insbesondere Android und iOS sind hier zu nennen, da diese sich in den Marktanteilen deutlich von den anderen Systemen absetzten. Um eine möglichst gründliche Entscheidung zu treffen, stellten wir eine Entscheidungsmatrix auf. Dabei wurde die Wahl anhand von 3 Kriterien festgesetzt: Das Vorhandensein in den Geräten, die benötigte Entwicklungslandschaft und die Höhe der Entwicklungskosten.

\subsubsection*{Symbian}

Symbian ist ein bei den meisten heutigen Smartphonenutzern eher unbekanntes Betriebssystem. Dass es nur so wenige kennen, liegt eher an der Vermarktung als an der Verbreitung. Noch 2010 hatte Symbian einen Markteinteil von fast 38\%. \citep{on:gartner} Entwickelt wurde Symbian von einem Konsortium aus namhaften Handyherstellern wie Ericsson, Motorola und Nokia. Nokia lieferte nahezu ohne Ausnahme alle seine Geräte mit Symbian aus, weshalb Nokia sich zur stärksten treibenden Kraft bei der Entwicklung von Symbian entwickelte. Auch einige Samsung und Sony Ericsson-Geräte wurden mit Symbian ausgeliefert, jedoch stiegen diese Hersteller 2010 aus der Kooperation aus und setzten vermehrt auf das neue, immer stärker werdende Android. Mit Ausnahme des Umfangs bot Symbian jedoch alle Funktionalitäten, die man von einem heutigen Smartphonebetriebssystem erwartet.

Der Misserfolg kam mit dem Erfolg von Android und den Problemen von Nokia. Nokia hatte die Entwicklung Symbians so lange wie möglich aufrecht erhalten, doch es zeigte sich schnell, dass Nokia den Trend der Smartphones durch ihre Fixierung auf Symbian verpasst hatte. Durch weitere Schwierigkeiten verlor Nokia mehr an Boden und musste reagieren. Nokia entschloss sich somit auf das kommende Windows Phone 7 als Betriebssystem zu setzen\citep{on:golem}, und stellte die Weiterentwicklung von Symbian vollständig ein.

Symbian ist in Anbetracht der Aufgabenstellung ein vollwertiges Betriebssystem, welches alle Funktionalitäten bietet, die zur Umsetzung nötig sind. Disqualifiziert wird es jedoch durch die Tatsache, dass nicht mit einer Weiterentwicklung zu rechnen ist und die Marktanteile mittlerweile bereits im niedrigen einstelligen Bereich liegen.

Die Entwicklung von Anwendungen für Symbian ist aufgrund der kleinen Community nicht ganz so umfangreich dokumentiert. Dennoch stellt sich mit dem QT-Framework eine vollständige Entwicklungsumgebung für Symbiangeräte bereit, welche einem die Anwendungsprogrammierung in C++ erlaubt.

\subsubsection*{iOS}

Das von Apple für seine mobilen Geräte entwickelte Betriebssystem iOS dient als Grundlage einer ganzen Produktfamilie. So läuft das System nicht nur auf dem von Apple entwickelten iPhone, sondern ebenfalls auf deren Tablet-PC iPad und dem tragbaren Musikspieler iPod Touch.

iOS entstand unter dem Namen OS X als erste Version des von Apple 2007 herausgebrachten iPhone. Als Basis diente das damalige Mac OS X, welches an die Anforderungen eines Smartphones und eines ARM Prozessors angepasst wurde. Im tiefen Ursprung handelt es sich bei iOS somit um ein UNIX derivat. Nach einer weiteren Umbenennung in iPhone OS gelangte es aufgrund der Vielfalt der Geräte, auf denen es mittlerweile lief, im Jahr 2010 zu seinem heutigen Namen iOS.

Die Einführung des iPhone und damit auch die Einführung von iOS revolutionierten die Smartphonewelt. Smartphones gab es zu dieser Zeit bereits einige. Die Auswahl des Betriebssystems war allerdings sehr beschränkt. Blackberry und Symbian boten zwar je nach Rechenleistung des Handys einen großen Funktionsumfang, allerdings waren diese fast ausschließlich auf die Bedienung per Tastatur ausgelegt. Auch die alternative Windows CE bot zwar die Eingabe per Touchscreen, allerdings gelang dies nur mit einem Eingabestift oder einem angespitzten Fingernagel vernünftig. Grund waren die sehr teuren und kaum smartphoneoptimierten Touchscreens. Das Bedienkonzept, welches iOS nun mitbrachte, benötigte einen einfach mit dem Finger zu bedienenden kapazitiven Touchscreen. Somit trug das Betriebssystem iOS mit seinem Bedienkonzept entscheidend zum Erfolg des iPhones bei.

iOS wurde erst von Android vom Thron der Marktanteile verdrängt, hält sich aber weiterhin mit an der Spitze. Es ist somit nach wie vor sehr weit verbreitet und genießt eine ständige Weiterentwicklung. Durch die Produktarmut von Apple ist kaum eine individuelle Anpassung an die Hardware der mobilen Endgeräte notwendig, weshalb sich neue iOS Versionen sehr schnell auf den Geräten verbreiten. Der Umfang des Betriebsystem lässt sich durch ein umfangreiches App-Angebot schnell und einfach erweitern. Dennoch verfolgt Apple leider eine sehr strenge Produktpolitik. Grundlegend ist es auf den Geräten nur möglich, Apps aus Apples AppStore zu installieren. Eine eigenmächtige Installation ist somit nicht möglich. Ein weiterer wunder Punkt ist, dass Apple das Multitasking ausschließlich für vorinstallierte Apps erlaubt. Dies sorgt zwar für eine meist gute Performance, erschwert aber an vielen Stellen die Entwicklung einer App. Schlussendlich erfordert die Entwicklung von Apps für iOS eine Registrierung bei Apple selbst. Dafür stellt Apple aber auch die vollständige Entwicklungsumgebung XCode zur Verfügung. Sie erlaubt es, in Objectiv C aber auch in C++ Apps zu entwickeln.

Bei der Wahl des Betriebsystems stellt sich iOS somit grundlegend positiv dar, allerdings sind die Bedingungen, an die Apple die Entwicklung einer App knüpft und die relativ seltene Programmiersprache Objective C sowie die Notwenigkeit eines Mac OS X, Hindernisse, welche iOS für die Entwicklung eines Prototypen disqualifizieren.

\subsubsection*{Blackberry OS / Blackberry 10}

Blackberry war einer der Marktführer auf dem Gebiet der Smartphones. Ursächlich hierfür ist die extrem starke Fixierung auf Businesskunden. Blackberry Geräte waren lange Zeit auf die Einhandbedienung ausgelegt. Die starke Businessoptimierung der Geräte führt dazu, dass diese ohne einen angebundenen BlackBerry-Enterprise-Server in ihrer Funktionalität sehr beschränkt sind. Schon seit jeher sind die mobilen Endgeräte von Blackberry mehr ein Terminal als ein vollständig eigenständiges Smartphone. Der jahrelange Erfolg der Geräte war jedoch genau durch diese starke Einschränkung gewährleistet. So waren Blackberrygeräte die ersten, die Push-Mail, Instant-Messaging, Synchronisation von Kalendern, E-Mail und Dokumenten schon seit Jahren unterstützen. Ermöglicht wird dies eben durch den Blackberry-Enterprise-Server und ein hochentwickeltes Datenübertragunsprotokoll. Durch die unglaubliche Optimierung schafft es Blackberry laut eigenen Angaben, dass das Empfangen von 500 E-Mails im Monat und etwa 100 Kalendereinträgen in der Woche kaum mehr als 1 MB im Monat verbraucht. Dies ermöglichte selbst in Zeiten von GPRS eine vollständige Funktionalität. Ein weiterer Punkt, für den der Name Blackberry stand, war die unabdingbare Datensicherheit und Datenschutz, sodass Firmen selbst kritische Daten an ihre mobilen Endgeräten zur Verfügung stellen konnten. Selbstverständlich bietet Blackberry OS auch Erweiterungen durch Apps. Durch den geringen Privatkundenanteil ist die Zahl der Anwendungen jedoch stark begrenzt. Durch diverse Schwierigkeiten mit der Erreichbarkeit der Blackberry-Server sowie Sicherheitslücken verlor auch Blackberry einiges an Marktanteilen. Mittlerweile bietet Blackberry auch ein Touchscreengerät an. Dafür wurde das alte Blackberry OS vollständig überarbeitet und erschien erst im Mai 2013 neu als Blackberry 10.

Durch die starke Businessorientierung und den mittlerweile bodenlos gesunkenen Marktanteil sowie die quasi zwingende Voraussetzung eines Blackberry-Enterprise-Servers ist es für die Entwicklung eines App-Prototypen absolut ungeeignet.

\subsubsection*{WindowsPhone}

WindowsPhone ist das von Microsoft entwickelte Smartphonebetriebssystem. Die erste Version WindowsPhone 7 setzt der Abstammung nach die Windows CE Linie fort. Genau wie iOS und Android ist WindowsPhone 7, anders als seine CE Vorgänger, ein vollständig auf Fingertouchbediengung ausgelegtes Betriebssystem. Auch Microsoft investierte viel Arbeit in die Entwicklung eines guten und innovativen Bedienkonzepts. So entwickelte Microsoft die Kacheloberfläche, welche ein sehr flexibles Design und Layout der Benutzeroberfläche zulässt. Zudem ist das WindowsPhone Bestandteil von Microsofts Plan ein System zu schaffen, welches über alle Geräte hinaus gleichermaßen zu bedienen ist. Mit Windows 8 zeigt sich, dass Microsoft die Kacheloberfläche auch auf Desktoprechnern eingeführt hat. Um diesen Schritt weiter zu gehen, entwickelte Microsoft sein WindowsPhone Betriebsystem in der Version 8 dahingehend weiter, dass des nun auf dem Windows NT Kernel basiert. Damit zieht es gleich mit Windows 8 und dem für ARM konzipierten Windows RT. Dennoch scheint Microsoft noch mit vielen Schwierigkeiten zwischen den einzelnen Systemen zu kämpfen, denn außer des Look-and-Feels funktioniert einiges noch nicht systemübergreifend. Dennoch lassen sich prinzipiell bereits alle im App-Store verfügbaren Apps nicht nur auf den mobilen Endgeräten mit WindowsPhone oder Windows RT installieren, sondern gelangen auch auf die Desktoprechner. Auch um dies zu gewährleisten, verfolgt Microsoft in seiner App-Politik eine ähnlich strenge Linie wie Apple in ihrem AppStore. Durch die zwanghafte Bindung an den Microsoft Store ist es nicht ohne weiteres möglich, Apps aus anderen Quellen zu installieren.

Diese Tatsache und auch die noch sehr geringe Verbreitung sprechen gegen die Verwendung von WindowsPhone zur Implementierung eines Prototypen. Dennoch stellt sich WindowsPhone als sehr positives System dar, die Entwicklung geschieht über für Microsoft typische Wege mit VisualStudio und dem .NET Framework und ist somit nicht weiter fremd.
\subsubsection*{Android}

Als weiteres System geht Android ins Rennen. Durch seine enorme Verbreitung setzt es sich bereits weit von allen anderen Betriebssystemen positiv ab. Android ist das zu großen Teilen quelloffene Betriebssystem der Open Handset Alliance, welche ins Leben gerufen wurde, um öffentliche Standards für Mobilgeräte zu entwickeln. Gründer und eine der großen treibenden Kräfte der Allianz ist Google. Die Entwicklung von Android begann bereits früher als Kamerabetriebsystem. In Zuge der Allianz gab Google jedoch 2007 bekannt, dass Android nun als Smartphonebetriebssystem entwickelt werden würde. Bereits 2008 erschien die erste Android Version auf dem Markt. Auch Android ist ein vollständig auf Fingertouchbedienung ausgelegtes mobiles Betriebssystem. Es basiert auf einem Linuxkernel und wurde der mobilen Umgebung und der Touchbedienung angepasst. Google verfolgt, anders als Microsoft und Apple, eine sehr offene App-Politik. Prinzipiell ist es möglich Apps aus jeder beliebigen Quelle zu installieren. So existieren auch bereits mehrere Appstores neben dem Google eigenen Playstore, wie z.B. der AndroidPit Store.

Android überzeugt in vielen Bereichen. Mit über 70\% Marktanteil ist Android im Bereich der weltweiten Verbreitung ungeschlagen. \citep{on:marktanteile} Auch die einfache und kostenlose Entwicklung unter Java mit einem vollständigen SDK bringt Android eine positive Bewertung ein und ist somit weit vor dem direkten Konkurrenten iOS, der für die Entwicklung eine eigene Sprache und einen Developer Account von Apple benötigt. Durch das quelloffene Design von Android und den großen Marktanteil ist die Entwicklercommunity riesig und es gibt viel Hilfestellung, Tutorial und HowTos. Somit zeigt sich Android als nahezu prädestiniertes Betriebssystem zur Entwicklung eines Prototypen.

Die Kriterien im Einzelnen zeigt ebenfalls die Tabelle \ref{tab:osstudie}. Es ist klar zu sehen, dass Android alle Kriterien am besten erfüllt. Daher wird zur Entwicklung des Prototypen Android als das Entwicklungssystem festgelegt.

\begin{table}
	\includegraphics{tabellen/OSStudie2.pdf}
	\caption{Studien zur Auswahl des Betriebssystems}
	\label{tab:osstudie}
\end{table}


\subsection{Technologiestudie}

Bestandteil der Entwurfsphase ist die Auswahl einer geeigneten Übertragungstechnologie zwischen den zwei Endgeräten. Zur Auswahl stehen verschiedene Techniken. Außer dem USB-Datenkabel sind die Techniken durchgehend drahtlos. Zu ihnen zählen Bluetooth, NFC, WiFi, Infrarot, QR-Code und das Internet in Verbindung mit einem Cloudspeicherdienst (hier Dropbox).

Zur objektiven Bewertung wurden Kriterien festgelegt. Abhängig von seiner Wichtigkeit besitzt jedes Kriterium eine Punktzahl. Die höchste Punktzahl wird an die Verfügbarkeit im Betrieb, Verbreitung in Geräten und Benutzerfreundlichkeit vergeben. Der Grund ist eine größtmögliche Abdeckung der Kunden und eine einfache Nutzung der Technik für die Verringerung des Aufwands.
Dazu hat jedes Kriterium einen dreistufigen Maßstab mit einer Farbskala von grün (gute Erfüllung des Kriteriums) über gelb (neutrale Wertung) bis rot (schlechte Wertung). Bei maximaler Erfüllung (grün) wird die entsprechende Punktzahl vergeben. Bei einem neutralen Erfüllungsgrad (gelb) werden keine Punkte vergeben. Bei der schlechtesten Wertung (rot) wird die Punktzahl für das entsprechende Kriterium abgezogen.

Zu den getesteten Techniken zählen absteigend nach der Punktzahl: Bluetooth, NFC, QR-Code, Wifi Direct, WLAN Infrastruktur, 3G Internet und Infrarot. Auch das USB-Kabel wurde mit in die Studie einbezogen und erreicht verhältnismäßig viele Punkte. Da das USB-Kabel allerdings große Einschränkungen in der Bewegungsfreiheit mit sich bringt und auch unterwegs nicht immer ein USB-Kabel und ggf. auch ein USB On The Go Adapter verfügbar sind, scheidet das USB als Übertragungstechnik aus.
\\\\
Die komplette Technologiestudie im Detail ist im Anhang auf der Seite \pageref{technostudie} zu finden.

\subsubsection*{Bluetooth und Bluetooth Low Energy}

Den ersten Platz unserer Studie belegt mit 160 Punkten die Technik Bluetooth. Dieser Funkstandard wurde in den neunziger Jahren entwickelt. 2009 wurde Bluetooth um Bluetooth Low Energy erweitert, welches auf dem selben Protokoll beruht, aber eine weitaus energiesparendere Nutzung ermöglicht. Bluetooth Low Energy (LE) belegt mit 100 Punkten den 2. Platz unseres Rankings.

Bluetooth gilt in der aktuellsten Version 4.0 als die beste Technik. Durch die hohe Verbreitung in Geräten und die ständige Verfügbarkeit während der Nutzung senkt Bluetooth die Kosten und erhöht die Benutzerfreundlichkeit mit dem einfachen und bekanntem Umgang. Die Übertragungsdistanz von 20 Metern reicht für unsere Anforderungen vollkommen aus. Einzig die mittelmäßige Übertragungsrate und eine mögliche Datenunsicherheit sind Kritikpunkte an der Technik.

Die Low Energy Erweiterung wirkt sich im Gegensatz zu normalem Bluetooth in der Verbreitung in Geräten negativ aus. Außerdem ist die Übertragungsdistanz und -rate für einen geringeren Energieverbrauch eingeschränkt auf nur 10 Meter und 1Mbit/s. Deshalb büßt diese Erweiterung Punkte bei der Bewertung ein und landet deshalb auf dem 2. Platz.

\subsubsection*{NFC}

NFC ist bereits seit einigen Jahren im Einsatz. In die Smartphonewelt beginnt es jedoch erst jetzt seinen Einzug. NFC steht für Near Field Communication, was so viel heißt wie Nahfeldkommunikation, was bereits darauf hinweist, dass es nur über eine stark begrenzte Reichweite verfügt. Dabei grenzt sich NFC durch einige Merkmale deutlich von Bluetooth und WLAN ab. Der wohl wichtigste Unterschied ist die Reichweite. NFC bietet eine Reichweite von maximal 5cm. Dies bedeutet, dass Geräte, die Daten austauschen wollen, sich direkt nebeneinander befinden müssen, damit überhaupt eine Verbindung möglich ist. Das Positive an NFC ist eine permanente Verfügbarkeit und durch diese geringe Übertragungsdistanz schlussfolgernde geringe Störanfälligkeit und Datensicherheit bei der Übertragung von Daten. Leider ist die Verbreitung von NFC Chips noch nicht weiter vorangeschritten, was hoffentlich in den nächsten Jahren anwachsen wird. Die niedrige Übertragungsdistanz und die schmale Übertragungsbandbreite von 424kbit/s sorgen allerdings bei größeren Datenmengen für eine geringe Benutzerfreundlichkeit. In solch einem Fall müssen die Geräte Rücken an Rücken gehalten werden, bis die Übertragung abgeschlossen ist. Im Gesamtwert kommt NFC als mögliche Technik auf 100 Punkte, welches ihm zusammen mit Bluetooth LE den 2. Platz einbringt.

\subsubsection*{QR-Code}

QR-Codes werden schon seit geraumer Zeit in der Industrie und Logistik verwendet. Toyota initiierte die Entwicklung des QR-Codes bereits 1994 und beauftragte das Tochterunternehmen des Zulieferers, Denso Wave, damit. \citep{on:qrcode} QR-Code steht für Quick Response und heißt damit so viel wie \glqq schnelle Antwort\grqq. Er sollte es ermöglichen, Informationen schnell aus einem Label oder Aufdruck auszulesen. Ziel war es mehr Informationen in dem Code speichern zu können als es ein einfacher Barcode vermag, der gerade einmal Platz für eine EAN-Nummer bietet. \citep{on:eancode} Um dies zu erreichen, wurde aus dem eindimensionalen Barcode der zweidimensionale QR-Code. Er besteht aus kleinen Quadraten, die in einem quadratischen Raster angeordnet sind. In drei der Ecken des Rasters befinden sich zur Ausrichtung notwendige große Quadrate. Daneben besitzt ein QR-Code noch weitere Details zur Typisierung, Orientierung und Synchronisation. Die Daten selbst bilden den größten Teil der Pixel, wobei sich ebenfalls noch je nach Klasse des QR-Codes Prüfsummen und Redundanzen neben den Daten befinden. Diese stellen sicher, dass der Code selbst bei leichter Verschmutzung oder schlechter Lesbarkeit korrekt ausgelesen werden kann bzw. Fehler eindeutig erkannt werden.

\begin{figure}
	\includegraphics{bilder/QRCode.png}\centering
	\caption{QRCode mit Zeichenkette: QR Code}
	\begin{footnotesize}
	Quelle: http://upload.wikimedia.org/wikipedia/commons/8/87/QRCode.png (26.07.13)
	\end{footnotesize}
\end{figure}

Das Einlesen eines QR-Codes auf einem heutigen Smartphone dauert nicht länger als wenige Sekunden. Am längsten benötigt die Kamera, um den Code scharfzustellen und zu fokussieren. Allerdings ist für die Datenübertragung per QR-Code stets Sichtkontakt notwendig und die Mobiltelefone dürfen nicht viel mehr als etwa 20 cm voneinander entfernt sein. Ein weiteres Manko ist, dass ein QR-Code im Vergleich nur relativ geringe Datenmengen übermitteln kann. In einem maximal 177 x 177 Pixel großen QR-Code können etwa 2.953 Byte enthalten sein, was die Übertragung von Dateien quasi ausschließt. Diese Einschränkungen schlagen sich deutlich auf die Bewertung des QR-Codes nieder.

\subsubsection*{WLAN Infrastruktur}

WLAN steht für Wireless Local Area Network. Es handelt sich dabei um eine kabellose Lösung für ein Lokales Netzwerk. Hier wird eine Infrastruktur aufgebaut, in der sich alle Clients mit einem WLAN Access Point verbinden. Jegliche Kommunikation läuft über ein lokales Netzwerk ab und zwingend über den WLAN Access Point.

Überzeugen kann diese Lösung durch eine gute Reichweite und eine sehr gute Übertragungsrate. Die Verfügbarkeit von Access Points ist jedoch leider viel zu gering und keineswegs allgegenwärtig. Da ein Access Point zwingend vorhanden sein muss und auch die meisten öffentlichen Access Point eine direkte Kommunikation zwischen den Clienten unterbinden, ist diese Technologie leider nicht praktikabel. Durch die erheblichen Nachteile bekommt es eine Bewertung von 45 Punkten.

\subsubsection*{Wi-Fi Direct}

Einen der großen Nachteile von WLAN löst Wi-Fi Direct. \citep{on:wifidirect} Geräten, die diesen Standard unterstützen, ist es möglich sich, per WLAN direkt ohne Access Point zu verbinden. Dabei emuliert mindestens eines der beiden Geräte das Verhalten des Access Point per Software. Somit ist es sogar möglich, ganze Netzwerke über Wi-Fi Direct aufzubauen.

Es verfügt ebenfalls über eine gute Reichweite und eine sehr gute Übertragungsrate. Leider ist es derzeit noch auf nicht allzu vielen Smartphone vertreten und bietet sonst ebenfalls wenige positive Aspekte, weshalb es mit 50 Punkten nur eine geringfügig bessere Bewertung als WLAN Infrastruktur erhält.

\subsubsection*{3G Internet}

Eine weitere Technologie ist die Verwendung einer mobilen Internetverbindung. Diese läuft im Allgemeinen für den Anwender transparent über verschiedene Standards ab. Die heute gängigen Standards sind GPRS, EDGE (2G), UMTS (3G), HSDPA/HSUPA (3G+), LTE (4G). Je nach Standard variiert hier auch die Geschwindigkeit extrem. Während z.B. bei schlechtem Netz und über GPRS gerade einmal 55 kbit/s möglich sind, ermöglicht das neuste LTE bei verfügbarem Netz eine sagenhafte Übertragungsrate von bis zu 300 Mbit/s. Dabei handelt es sich um das über 5000 fache der Geschwindigkeit bei GPRS Empfang. Auch wenn die Netzabdeckung zumindest von GPRS und EDGE mittlerweile quasi flächendeckend ist, kann es in Gebäuden oder an abgeschirmten Gebieten dazu kommen, dass kein Netz verfügbar ist. Ebenfalls fallen heutzutage noch immer nicht ganz unerhebliche Kosten für die Verwendung eines mobilen Internetanschlusses an, welches einen weiteren Nachteil darstellt. Da es sich bei 3G nicht um eine direkte Ende zu Ende Verbindung handelt, muss man sich hier weiterer Techniken bzw. Dienste bedienen, welche den Implementierungsaufwand und eventuell auch die Benutzerfreundlichkeit beeinträchtigen. Im Großen und Ganzen schneidet 3G nicht negativ ab, allerdings kann es auch nur in wenigen Punkten überzeugen. Dies führt zu einer moderaten Bewertung von nur 70 Punkten.

\subsection{Bedienungsstudie}


Die zu entwickelnde App Capood erfordert ein hohes Maß an Benutzerfreundlichkeit. Dafür ist ein intuitives Bedienungskonzept essentiell. Im Rahmen des konzeptionellen Entwurfes wurden je drei Szenarien für die Sender- und die Empfängerseite entwickelt und anschließend gegenübergestellt. Ähnlich zur Technologiestudie wurden Kriterien ausgesucht, die eine objektive Bewertung der Bedienkonzepte zulassen. Die Kriterien wurden mit Prozentzahlen priorisiert.

\begin{itemize}
\item Usability 50\%
	\subitem Eine gute Usability steht für eine intuitive Bedienung. Das Konzept erfüllt gängige Anforderungen der Dialoggestaltung.
\item Sicherheit 30\%
	\subitem Die mit der App zu verarbeitenden Inhalte können von privater Natur sein. Ein verantwortungsvoller Umgang ist deshalb wichtig und Daten dürfen nur auf expliziten Befehl des Anwenders verschickt werden.
\item Ressourcenverbauch 10\%
	\subitem Zur gegenwärtigen Zeit werden Smartphones immer leistungsfähiger. Die damit verbundene erhöhte Leistungsaufnahme lässt die Akkulaufzeit sinken. Es ist daher wichtig, dass die Applikation keine unnötige Last erzeugt, die die Akkulaufzeit zusätzlich schmälert.
\item Implementierungsaufwand 10\%
	\subitem Der Implementierungsaufwand wurde vom Entwicklerteam subjektiv abgeschätzt. Eine niedrigere Bewertung ist zu bevorzugen.
\end{itemize}


\subsubsection*{Konzepte der Senderseite}

\begin{itemize}
\item Händisches Copy \& Paste
	\subitem Der Anwender kopiert den Text, den er versenden möchte. Anschließend wird die App Capood gestartet. Der Text wird in eine Sendemaske eingefügt und anschließend wird das Empfängergerät ausgewählt. Im Anschluss startet der Sendevorgang. Dieses Konzept steht für volle Kontrolle durch den Nutzer. Die Usability ist vergleichsweise schlecht. Außerdem wird die App nur dann laufen, wenn sie auch explizit genutzt wird. Das Resultat ist ein geringer Ressourcenverbrauch.

\item Copy - Benachrichtigung
	\subitem Der Anwender kopiert den Text, den er versenden möchte. Anschließend wird eine Benachrichtigung erstellt, die der Anwender über die Benachrichtigungsleiste (Android) aufrufen oder verwerfen kann. Sollte die Benachrichtigung aufgerufen werden, öffnet sich die App mit dem eingefügten Inhalt der Zwischenablage. Es muss nur ein Empfängergerät gewählt werden. Dann startet der Sendevorgang. Bei diesem Konzept hat der Nutzer die volle Kontrolle gepaart mit einer verbesserten Usability gegenüber dem ersten Konzept. Der Ressourcenverbrauch ist erhöht, da die Zwischenablage im Hintergrund überwacht werden muss.

\item automatische Synchronisation
	\subitem Der Anwender kopiert den Text, den er versenden möchte. Anschließend wird der Inhalt der Zwischenablage automatisch mit allen empfangsbereiten und mit dem Sender gepaarten Geräten geteilt. Bei diesem Konzept ist die App Capood für den Nutzer praktisch unsichtbar. Die Usability ist sehr hoch, weil die App automatisch agiert und der Nutzer nur noch intuitiv den zu versenden Text kopieren muss. Allerdings fehlt jegliche Kontrolle, wer den kopierten Inhalt empfangen wird. Die Sicherheit ist damit stark geschwächt. Auch hier muss im Hintergrund die Zwischenablage überwacht werden.
\end{itemize}


Nach der Gegenüberstellung der drei Konzepte dominiert das Konzept „Copy - Benachrichtigung“ (siehe auch Tabelle \ref{tab:sender}). Der Versand von Dateien wird an dieser Stelle getrennt behandelt, weil die Zwischenablage des Android-Betriebssystems nicht mit Dateien funktioniert.

Der Versand von Dateien soll über die Teilen-Funktion realisiert werden. Sobald eine Datei aus einer anderen App heraus geteilt wird, kann Capood als App zum Versenden ausgewählt werden. Anschließend öffnet sich eine Ansicht, die wichtige Daten der Datei anzeigt und die Möglichkeit bietet ein Empfangsgerät zu wählen. Nach Auswahl des Empfängers wird eine Anfrage verschickt, ob dieser die Datei empfangen möchte.

\begin{table}
	\includegraphics{tabellen/Bedienung_Sender.pdf}
	\caption{Bedienungskonzepte Senderseite }
	\label{tab:sender}
\end{table}

\subsubsection*{Konzepte der Empfängerseite}

\begin{itemize}
\item Empfangen nur bei geöffneter App Capood
    \subitem Daten können nur empfangen werden, wenn der Anwender Capood geöffnet hat. Diese Variante überzeugt bei der Sicherheit, weil das Gerät keine unerwünschten Daten im Hintergrund empfangen kann. Der Implementierungsaufwand ist am geringsten und der Ressourcenverbrauch ist auch gering, weil die App nur dann geöffnet ist, wenn sie gebraucht wird. Allerdings ist die Usability schlecht, weil der Nutzer zum Empfang die App explizit öffnen muss.
\item Benachrichtigung über verfügbare Nachricht
    \subitem Sobald eine Nachricht beim Empfänger eingeht, wird eine Benachrichtigung in der Benachrichtungleiste angezeigt. Sobald diese Benachrichtigung ausgewählt wird, öffnet sich Capood und präsentiert die Nachricht. Bei einer Textnachricht wird der Inhalt dargestellt und über eine Schaltfläche kann dieser in die Zwischenablage kopiert werden. Sollte es sich um einen Dateitransfer handeln, wird der Anwender gefragt, ob er die Datei empfangen möchte. Nach positiver Bestätigung wird die Datei vom Sender geschickt und auf dem Empfängergerät gespeichert. Es wird die größtmögliche Kontrolle bei guter Usability gewährt. Im Hintergrund muss ständig überwacht werden, ob eine Nachricht an das Gerät versandt wurde. Das kostet wertvolle Systemressourcen und Akkulaufzeit.
\item Automatisches Empfangen von Dateien
    \subitem Eine vom Sender verschickte Datei wird automatisch empfangen und in das Dateiverzeichnis abgespeichert. Der Nutzer hat keine Kontrolle, welche Datei er von wem und wann empfängt. Auch hier muss der Bluetoothadapter permanent überwacht werden, was zusätzliche Systemlast erzeugen kann.
\end{itemize}


\begin{table}
	\includegraphics{tabellen/Bedienung_Empfaenger.pdf}
	\caption{Bedienungskonzepte Empfängerseite }
	\label{tab:empf}
\end{table}

Auf Empfängerseite überzeugt analog zur Senderseite das Konzept mit Benachrichtigungen „Benachrichtigung über verfügbare Nachricht“ (siehe Tabelle \ref{tab:empf}).

\subsection{Releaseplanung}

Bei der Softwareentwicklung existieren mehrere Vorgehensmodelle, die die Art der Entwicklung für das gesamte Team festlegen. Bei den Modellen unterscheidet man zwischen sequentiell („Wasserfall“), iterativ („spiralförmig“) und leichtgewichtig („agil“).

Für die Entwicklung der Applikation „Capood“ wurde eine agile Methode gewählt, die den Entwicklern größere Freiheiten einräumt. Das charakteristische an dieser Vorgehensweise ist eine kontinuierliche Anpassung der Änderungen (Continious Integration), welche zu jedem Zeitpunkt der Entwicklung eine funktionsfähige Applikation beinhaltet. \citep{on:vorgehensmodell}

Dennoch spielt bei der agilen Vorgehensweise die iterative Entwicklung eine Rolle. Dabei wird die gesamte Entwicklung in mehrere Teile (Iterationen) aufgespalten, deren Funktionalität nach und nach zu der Gesamtapplikation hinzugefügt wird. Nach jeder einzelnen Iteration gibt es eine neue Version der entwickelten Software, die diese um die in der letzten Iteration beschriebenen Funktionalitäten erweitert.

Am Ende ensteht ein fertiges Release, welches meistens die Markteinführung oder Veröffentlichung der Applikation mit sich zieht.

Für das fertige Release der Capood Applikation gab es 10 Iterationsschritte: von Version 0.1 bis 1.0 (siehe Tabelle \ref{tab:rel1}).

\begin{table}
\small
\rowcolors{1}{white}{gray!10}
\begin{tabularx}{\textwidth}{cX}
\toprule[2pt]
Version & Tasks\\
\midrule[1pt]
0.1 & Pairing zwischen 2 Android-Geräten aus der Applikation heraus\\
0.2 & Aus der Applikation heraus simples Verschicken und Empfangen von Texten\\
0.3 & Hintergrunddienst zum Überwachen der Zwischenablage\\
0.4 & Hintergrunddienst zum Überwachen von eingehenden Nachrichten\\
0.5 & Benachrichtigung über Kopiervorgang zum Öffnen der Applikation\\
0.6 & Benachrichtigung und Bestätigung über Empfang einer Nachricht\\
0.7 & Unterstützung von Dateiversand und –empfang\\
0.8 & Kontextmenü (Öffnen mit..) mit der Applikation verbinden\\
0.9 & Dateiverwaltung am Empfangsgerät\\
1.0 & Interpretation des Nachrichtentyps am Empfangsgerät (Link, Bild, Lied; etc..)\\
\bottomrule[2pt]
\end{tabularx}
\caption{Releaseplanung 1.0}
\label{tab:rel1}
\end{table}

Die Entwicklung der Applikation sollte sich in den Versionen 0.1 bis 0.6 nur auf das Versenden von Textnachrichten beziehen.

Zu Beginn der Entwicklung sollte zunächst nur eine erfolgreiche Bluetoothverbindung hergestellt werden. Sobald diese Verbindung erfolgreich hergestellt wurde, sollte das System in der Version 0.2 Textnachrichten versenden können, um die wichtigste Funktionalität am Anfang zu implementieren.

Die weiteren vier Versionen bezogen sich auf Hintergrunddienste und Benachrichtigungen für den Nutzer, um das intuitive Copy\&Paste Konzept erfolgreich in die Applikation einzubinden.
Erst ab Version 0.7 sollte auch der Dateiversand ermöglicht werden. Die weiteren Versionen befassten sich mit der Verwaltung der Dateien und dem automatischen Erkennen des empfangenen Dateityps.Dies wird von Android teilweise selbst durch das Betriebssystem bereitgestellt, indem es je nach Datentyp ein Kontextmenü mit einer Liste von Anwendungen öffnet, welche mit dem Typ umgehen können und somit auch als Standard für den Datentyp angegeben werden können.
Damit sollten alle wichtigen Funktionen implementiert worden sein und die Applikation könnte in der Version 1.0 veröffentlicht werden.

Weitere Releaseschritte wurden bereits in Tabelle \ref{tab:rel2} definiert und im Abschnitt „\nameref{fazit}“ auf Seite \pageref{fazit} weiter ausgeführt.

\begin{table}
\small
\rowcolors{1}{white}{gray!10}
\begin{tabularx}{\textwidth}{cX}
\toprule[2pt]
Version & Tasks\\
\midrule[1pt]
1.1 & Weitere Übertragungstechniken (NFC, Ad-hoc WLAN, etc..) \\
1.2 & Mehrsprachigkeit\\
\bottomrule[2pt]
\end{tabularx}
\caption{Releaseplanung 2.0}
\label{tab:rel2}
\end{table}

\section{Technischer Entwurf \& Spezifikation}
\subsection{Technologien}

Nach den durchgeführten Studien zum Thema Betriebssystem und Übertragungstechnologie war es möglich, die vorhandenen Ressourcen des Entwicklerteams zu ermitteln. Zur Verfügung standen zwei Android-Smartphones und ein Android-Tablet. Außerdem ist es möglich ein Androidbetriebssystem virtualisiert auf einem herkömmlichen Windows-PC zu betreiben. Das Projekt „Android-x86“ widmet sich der Portierung von Android auf die x86-Architektur. \citep{on:andro-x86}

Als Entwicklungsumgebung bietet Android das Android SDK an. Dieses arbeitet zusammen mit Eclipse. Ein komplettes Softwarepaket lässt sich herunterladen und beinhaltet ein Version von Eclipse mit integrierten Plugins für die Entwicklung von Android-Apps.

Der verfügbare Android-Emulator ist untauglich für die Entwicklung einer App, die Bluetooth verwenden soll, da der Emulator nicht in der Lage ist, eine Bluetoothverbindung bereitzustellen. Außerdem zeigt die Erfahrung, dass der Emulator sehr viel länger für den Bootvorgang des Android-Systems benötigt als ein virtualisiertes Android-x86 auf dem selben Computer. Sowohl Smartphones mit Bluetoothschnittstelle als auch Laptops mit virtualisiertem Android-x86 und Bluetoothschnittstelle sind geeignet für die Entwicklung von Capood.

Ein weiterer wichtiger Bestandteil des Android SDK ist die Android Debug Bridge (ADB). Sie verbindet Androidgeräte und die Entwicklungsumgebung Eclipse (bzw. dem ADT-Plugin). Zum Funktionsumfang gehören Datentransfer, Steuerung der Android-Geräte durch Befehle und auch Logausgaben für Eclipse - Logcat genannt. \citep[S. 102]{bach} Reale Androidgeräte benötigen einen USB-Treiber, damit sie von Eclipse erkannt werden. Bei virtualisierten Androidgeräten sind bestimmte Netzwerkeinstellungen zu treffen und außerdem muss nach jedem Start von Eclipse erneut die Verknüpfung durch ein Kommandozeilenbefehl hergestellt werden. \citep{on:virtualbox} Dieser Vorgang kann durch eine Batch-Datei vereinfacht werden.

Zur elektronischen Kommunikation und Organisation des Projektteams wird auf Codeplex zurückgegriffen. Codeplex ist eine von Microsoft bereitgestellt Projektmanagement-Plattform. Pro Projekt wird ein Wiki zur Dokumentation, eine Versionsverwaltung, ein Forum, einen Downloadbereich und ein Ticketsystem für Probleme (Issues) zur Verfügung gestellt.

Für die Versionsverwaltung werden mehrere Varianten bereitgestellt. Für das Projekt Capood wird ein Teamfoundationserver (TFS) verwendet. Es kann gleichzeitig auch Subversion verwendet werden, um mit dem TFS zu kommunizieren.

\subsection{Architektur}

Zu Beginn des Technischen Entwurfes wurden UML-Diagramme erstellt, die die Architektur der Applikation darstellen sollten (siehe Abbildung \ref{fig:klass_alt} auf Seite \pageref{fig:klass_alt}).

UML bedeutet Unified Modeling Language und ist eine Sprache zur Visualisierung und Konstruktion von Modellen einer Software oder Anwendung vor ihrer Umsetzung. Diese Sprache bietet Entwicklern eine einheitliche Entwurfsbasis zur gemeinsamen Diskussion über das Aussehen der zu entwickelnden Software. Diese Sprache wurde Ende der 90er Jahre entwickelt und gilt heute mittlerweile mit der Version 2.4 als allgemeiner Standard.

\begin{figure}[H]
	\includegraphics[scale=0.6]{bilder/klassendiagramm_alt}\centering
	\caption{vereinfachtes Klassendiagramm (Entwurfsphase)}
	\begin{footnotesize}
	Quelle: eigene Darstellung (erstellt mit UMLet)
	\end{footnotesize}
	\label{fig:klass_alt}
\end{figure}

Bei der Modellierung kreiert man Diagramme, die verschiedene Sachverhalte der Software darstellen. Die bekanntesten sind Klassen-, Aktivitäts- und Anwendungsfalldiagramme.
Das Klassendiagramm zeigt ein vollständiges Abbild des Systems: dessen Klassen, Methoden und Variablen. Das Aktivitätsdiagramm beschreibt das Verhalten der Software als eine Menge von elementaren Aktionen, zwischen welchen Datenflüsse existieren.

Anwendungsfalldiagramme beschreiben die Anforderungen an das System, welche Aufgaben dieses im Elementaren- und Gesamtkontext zu erfüllen hat. \citep{on:uml}

Für die Modellierung solcher Diagramme gibt es eine Vielzahl von Programmen, die den vollen Funktionsumfang von UML 2.4 abdecken.

Für unsere Modellierung haben wir das Open-Source- Tool UMLet in der Version 12.0 verwendet. \citep{on:umlet} Es ist ein einfaches, Java und xml-basiertes Tool, welches auf simple Art dem Anwender eine persönlich angepasste Modellierung der gewünschten Diagramme ermöglicht und gleichzeitig eine Vielzahl von Vorlagen bietet. Ein Export als Bild ist ebenfalls ohne Probleme möglich. Ein Export als Programmcode wird nicht unterstützt, war für das Projekt aber auch nicht zwingend erforderlich.

Für unsere Modellierung der Architektur hatten wir uns nur auf das Erstellen eines Aktivitätsdiagramms für das Senden und Empfangen der Nachrichten und das Klassendiagramm beschränkt.

\subsubsection*{Sendevorgang (Abbildung \ref{fig:ac_send})}

Nach dem Starten der Applikation muss das System den Status des BluetoothServices überprüfen. Dieser muss aktiv sein oder - bei Nichtaktivität - durch den Benutzer oder automatisch durch die Applikation selber - aktiviert werden. Der BluetoothService beinhaltet alle für die Bluetoothumgebung relevanten Funktionen.

\begin{figure}[H]
	\includegraphics[scale=0.5]{bilder/Activity_SendText.pdf}\centering
	\caption{Aktivitätsdiagramm für den Sendevorgang}
	\begin{footnotesize}
	Quelle: eigene Darstellung
	\end{footnotesize}
	\label{fig:ac_send}
\end{figure}

Nach der erfolgreichen Aktivierung des BluetoothService muss das System dem Nutzer die Möglichkeit geben, den Service der Zwischenablage zu aktivieren (ClipBoardService). Läuft der ClipBoardService nicht, so ist der Anwender gezwungen den Text außerhalb der Applikation zu kopieren und händisch in die Applikation wieder einzufügen. Ist der ClipBoardService aktiv bzw. wird durch den Anwender aktiviert, wird die Zwischenablage durch diesen überwacht, erkennt den Kopiervorgang und zeigt eine Benachrichtigung an, durch welche die Applikation automatisch mit dem kopierten Text aus der Zwischenablage geöffnet wird.

Danach muss das System die Möglichkeit bieten einen Empfänger für die Nachricht auszuwählen: Man unterscheidet dabei zwischen im System gespeicherten, gepaarten und neuen Geräten. Existiert noch keine Paarung, muss die Anwendung dem Nutzer die Möglichkeit bereitstellen, neue Geräte zu suchen und sich mit diesen zu paaren. Nach erfolgreicher Auswahl des Empfängers muss das System den Sendevorgang starten und erfolgreich ausführen. Danach ist der Sendevorgang beendet.

\subsubsection*{Empfangsvorgang (Abbildung \ref{fig:ac_empf})}

Das System prüft zunächst, ob eine aktive Paarung der beiden Geräte existiert. Ist es nicht der Fall, bekommt der Nutzer zunächst eine Paarungsanfrage, die dieser in der Applikation akzeptieren muss. Ist eine erfolgreiche Verbindung hergestellt, muss das System den Nutzer über eine empfangene Nachricht benachrichtigen. Durch die Auswahl der Benachrichtigung wird die Applikation geöffnet und die empfangene Nachricht angezeigt.

\begin{figure}[H]
	\includegraphics[scale=0.5]{bilder/Activity_Receive.pdf}\centering
	\caption{Aktivitätsdiagramm für das Empfangen von Nachrichten}
	\begin{footnotesize}
	Quelle: eigene Darstellung
	\end{footnotesize}
	\label{fig:ac_empf}
\end{figure}

Hier muss das System den Nachrichtentyp erkennen und eine Auswahl über die weiteren möglichen Aktionen treffen. Bei einer Textnachricht muss das System den empfangenen Text anzeigen und dem Nutzer die Möglichkeit geben, diesen zu verwerfen oder direkt in die eigene Zwischenablage zu kopieren. Bei einer Dateinachricht muss das System die Dateiinformationen anzeigen und dem Nutzer die Möglichkeit geben, die Nachricht mit dem Standardprogramm für den jeweiligen Dateitypen zu öffnen oder die Datei zu löschen. Nach beiden möglichen Aktionen ist der eigentliche Sendevorgang beendet.

Das Androidbetriebssystem verwendet sog. Acitvities. Eine Activity (dt. Aktivität) soll genau eine Aktivität repräsentieren, die der Anwender dieser Software durchführen kann. In der Praxis heißt dies, dass eine Activity als GUI-Element ein Fenster ist, das dem Anwender eine Schnittstelle zur der entsprechenden Funktionalität der Acitvity bietet. \citep[S. 281]{bach}

\begin{figure}[H]
	\includegraphics[scale=0.6]{bilder/klassendiagramm_neu}\centering
	\caption{vereinfachtes Klassendiagramm (aktueller Stand)}
	\begin{footnotesize}
	Quelle: eigene Darstellung (erstellt mit UMLet)
	\end{footnotesize}
	\label{fig:klass_neu}
\end{figure}

Bei der App Capood sind die Klassen in zwei Pakete aufgeteilt. Ein Paket bildet die Datenlogik und das zweite die GUI.

Das GUI-Paket enthält alle Activities. Es gibt Activities für das Senden und Empfangen jeweils von Textinhalten und Dateien, zur Auflistung der empfangenen Nachrichten, zur Suche von Empfängergeräten, für persönliche Einstellungen (Optionsmenü) und das Hauptmenü.
Das Datenlogik-Paket beinhaltet Klassen, deren Aufgaben das Verwalten der Daten und Dateien und der Bluetooth-Verbindung zwischen zwei Geräten sind.
\\\\
Im Folgenden werden die Funktionen aller wichtigen Klassen einzeln erläutert. Diese sind auch im aktuellen Klassendiagramm (siehe Abbildung \ref{fig:klass_neu} auf Seite \pageref{fig:klass_neu}) einsehbar.


\subsubsection*{Storage}
Die Storage-Klasse verwaltet die empfangenen Nachrichten. Textnachrichten und Dateinachrichten werden persistent und serialisiert in einer Textdatei gespeichert. Diese liegt im internen Speicherbereich der App, sodass niemand anderes (Anwender oder App) berechtigt ist, auf diese Datei zuzugreifen.

\subsubsection*{Message}
Die abstrakte Message-Klasse bildet die Basis für alle versandfähigen Nachrichten. Eine Message hat immer ein Datum und einen Typ (realisiert als Enum).

\subsubsection*{TextMessage}
Die TextMessage-Klasse dient zum Versand von Textnachrichten.

\subsubsection*{FileInfoMessage}
Die FileInfoMessage-Klasse stellt Informationen zu einer Datei bereit. Sie wird vor dem eigentlichen Versand einer Datei verschickt. Der Empfänger kann die Informationen der Datei einsehen und diese dann nach Bedarf annehmen oder ablehnen.

\subsubsection*{BooleanMessage}
Die BooleanMessage-Klasse dient zum Annehmen oder Ablehnen einer Datei.

\subsubsection*{FileMessage}
Die FileMessage-Klasse ist ein Wrapper für eine Datei. Die eine Instanz dieser Klasse enthält ein byte-Array mit den Bytes der repräsentierten Datei.

\subsubsection*{BluetoothService}
Der BluetoothService repräsentiert die Buetoothverbindung. Er erbt von der Klasse Service und wird auf Wunsch den Nutzer im Hintergrund gestartet. Wenn der Bluetoothservice aktiv ist und der Bluetoothadapter des Gerätes eingeschaltet ist, dann wartet der BluetoothService permanent auf eine eingehende Bluetoothverbindung für die App Capood (AcceptThread). Gleichzeitig wird über ihn auch die aktive Verbindungsaufnahme zu einem Empfänger gestartet (ConnectThread). Nach erfolgreichem Verbindungsaufbau haben sowohl Sender als auch Empfänger einen ConnectedThread, der die laufende Verbindung repräsentiert. Jedes Gerät hat Input- und Outputstreams des Verbindungspartners. Über die Klassen ObjectInputStream und ObjectOutputStream werden die Nachrichten als Message-Objekte serialisiert übertragen. Der BluetoothService basiert auf der Klasse BluetoothChatService aus dem Beispielprojekt BluetoothChat, welches von Android bereitgestellt wird.

\subsubsection*{ClipListenService}
Der ClipListenService ist ebenfall ein Service, der auf Wunsch des Users im Hintergrund läuft. Er überwacht die Zwischenablage (Interface OnPrimaryClipChangedListener). Sobald der Anwender einen neuer Text in die Zwischenablage kopiert, wird vom ClipListenService eine Benachrichtigung erstellt. Diese zeigt dem Anwender, dass ein Text in die Zwischenablage kopiert wurde. Nach dem Öffnen der Benachrichtung öffnet sich die SendingTextActivity. Der Inhalt der Zwischenablage wird automatisch in das Textnachrichtenfeld eingefügt.

\subsubsection*{DeviceListActivity}
Die DeviceListActivity wurde ohne Veränderungen aus dem Beispielprojekt Bluetoothchat übernommen. Sie dient zur Suche nach Bluetoothgeräten. Nach dem Aufruf wird sie als Popup über der aktiven Activity angezeigt und listet alle schon gepaarten Geräten auf. Der Nutzer hat die Möglichkeit weitere Geräte zu suchen.

\subsubsection*{SendingTextActivity}
Die SendingTextActivity ist die Nutzerschnittstelle zum Versenden von Textinhalten. Ein großes EditText-Feld bietet die Möglichkeit zur Texteingabe. Die maximale Zeichenanzahl ist auf 1000 Zeichen begrenzt und wird auch grafisch unterhalb des Eingabefeldes angezeigt. Sie ist durch die Konstante MAX\_CHARS gegebenenfalls auch mit wenig Aufwand anpassbar.

\subsubsection*{SendingFileActivity}
Die SendingFileActivity repräsentiert das Versenden von Dateien. Sie kann nicht direkt vom Nutzer ausgerufen werden. Der Aufruf erfolgt über Intentfilter zu der systemeigenen Sendeaktion (android.intent.action.SEND) für die MIME-Typen (Multipurpose Internet Mail Extensions) für Bilder, Videos, Audio und Anwendungen. Der Intentfilter wird in der Androidmanifest-Datei definiert.

\subsubsection*{ReceivingTextActivity}
Die ReceivingTextActivity wird immer dann geöffnet, wenn ein Textmessage empfangen wird und die daraus resultierende Benachrichtigung angewählt wird. Der Textinhalt der Nachricht wird dem Nutzer präsentiert. Er kann außerdem über einen Button den Inhalt in die Zwischenablage kopieren.

\subsubsection*{ReceivingFileActivity}
Die ReceivingFileActivity wird immer dann geöffnet, wenn eine FileInfoMessage empfangen wird und die daraus resultierende Benachrichtigung angewählt wird. Dem Nutzer wird zuerst ein Dialog anzeigt mit der Frage, ob der Nutzer die durch die FileInfoMessage repräsentierte Datei empfangen möchte. Sollte der Anwender dies bestätigen, wird der Dateiversand durchgeführt. Mit einem Button kann die Datei, sofern sie existiert, geöffnet werden. Dies wird mit der Systemaktion zum Öffnen (android.content.Intent.ACTION\_VIEW) realisiert. Anschließend wird die Datei mit dem Standardprogramm für den entsprechenden Dateitypen geöffnet.

\subsubsection*{HistoryActivity}
Die HistoryActivity zeigt alle empfangen Nachrichten sortiert nach Datum in einer ListView an. Dafür wurde eine eigene Adapterklasse (MessageAdapter) implementiert. Eine angewählte Nachricht kann über einen Button gelöscht werden. Durch längeren Druck am Touchscreen auf eine Nachricht wird diese geöffnet.

\subsubsection*{SettingsActivity}
Die SettingsActivity bietet über zwei Checkboxen die Möglichkeit, den ClipListenService und den BluetoothService an- und auszuschalten.

\subsection{Design}

Die Zielvereinbarung über das Projekt sieht einen Prototypen mit pragmatischem funktionalen Design vor. Das Design wurde zuerst auf Papier von Hand gezeichnet. Es wurden allen wichtigen Activities skizziert (siehe Abbildung \ref{fig:skizze} auf Seite \pageref{fig:skizze}).

Anschließend wurde das Design über die Entwicklungsumgebung Eclipse mit dem vorhandenen GUI-Builder für Android nachgebaut (siehe Abbildung \ref{fig:gui_builder} auf Seite \pageref{fig:gui_builder}). Der Editor arbeitet nach dem WYSIWYG-Prinzip. Da die grafischen Oberflächen auf XML-Dateien basieren, hat der Programmierer auch die Möglichkeit, direkt die XML-Datei zu verändern und auf diese Weise eine umfangreichere Kontrolle zu gewinnen (siehe Abbildung \ref{fig:xml_editor} auf Seite \pageref{fig:xml_editor}).

\begin{figure}[H]
	\includegraphics[scale=0.1]{bilder/activity-skizze}\centering
	\caption{Handgezeichnete Skizze einer Activity}
	\begin{footnotesize}
	Quelle: eigene Darstellung
	\end{footnotesize}
	\label{fig:skizze}
\end{figure}

Wichtig war es, die richtige Layoutvariante zu verwenden, da das Gesamtlayout sonst abhängig von der Displayauflösung des Smartphones nicht mitwächst. Um eine flexible Oberfläche zu bauen, eignet sich das RelativeLayout. Es ordnet die einzelnen Oberflächenelemente in Beziehungen untereinander an. Das komplizierte Verschachteln von Layouts ist nicht nötig.

\begin{figure}[H]
	\includegraphics[scale=0.6]{bilder/xml-editor}\centering
	\caption{XML-Editor für Layouts}
	\begin{footnotesize}
	Quelle: Screenshot aus Eclipse
	\end{footnotesize}
	\label{fig:xml_editor}
\end{figure}

Das Design beschränkt sich hauptsächlich auf Standardbausteine wie EditText, TextView, ProgressBar, CheckBox und Button.

Eine Besonderheit ist die ListView in der HistoryActivity zur Anzeige der bereits empfangenen Nachrichten. Hier kommt ein selbst entwickeltes Layout (history\_item.xml) für das Listenelement zum Einsatz. Es zeigt jeweils ein kleines Symbol auf der rechten Seite zur Visualisierung des Nachrichtentypes - entweder eine Datei- oder eine Textnachricht. Anschließend folgt eine TextView, die den Inhalt der toString()-Methode der jeweils repräsentierten Nachricht ausgibt. Die Verknüpfung von Datenlogik und grafischer Oberfläche erfolgt hier durch die selbst implementierte Adapterklasse MessageAdapter (erbend von der Klasse ArrayAdapter).

\begin{figure}[H]
	\includegraphics[scale=0.6]{bilder/gui-builder}\centering
	\caption{GUI-Builder des Android SDK}
	\begin{footnotesize}
	Quelle: Screenshot aus Eclipse
	\end{footnotesize}
	\label{fig:gui_builder}
\end{figure}

\section{Implementierung}
\subsection{Besonderheiten}

Android bietet eine eigene Klassenbibliothek, deren Klassen an das Betriebssystem und dessen Funktionalitäten angepasst sind.Bei der Implementierung der Applikation Capood wurde einige für Android spezifische Funktionen und Klassen genutzt. Im Folgenden werden diese Besonderheiten und deren Funktion innerhalb von Capood näher beschrieben:

\subsubsection*{SharedPreferences}
SharedPreferences bieten die Möglichkeit, Variablen persistent und klassen- oder applikationsübergreifend zu speichern. \citep{on:data-storage} Auf diese Wiese lassen sich zum Beispiel vom Nutzer vorgenommene Einstellungen nach dem Beenden der App und über einen Neustart des Systems hinweg sichern. Zum Einsatz kommt diese Technik zum Speichern des Zustandes der im Hintergrund laufenden Services. Die App weiß, ob der Nutzer die Services laufen lassen möchte oder nicht und kann diese gegebenenfalls nach einem Neustart des Systems wieder neu starten.

\subsubsection*{Service}

Die abstrakte Service-Klasse wird zum Realisieren von im Hintergrund agierenden Diensten genutzt. \citep{on:service} Ein Dienst kann gestartet und beendet werden. Außerdem kann ein Dienst eigenständig neu starten, wenn er zum Beispiel wegen Speichermangel gestoppt wurde, ohne dass dies vom Anwender explizit gefordert wurde. \citep{on:service-extend} Der BluetoothService und der ClipListenService erben von Service.

\subsubsection*{Storage}

Der persistente Speicher von Android gliedert sich in den externen und den internen Speicherbereich. Im externen Speicher können Dateien, ohne spezielle Zugriffsrechte und für jeden einsehbar, abgelegt werden. Im internen Speicherbereich kann nur der Root-Benuter im gesamten und eine Applikation in ihrem eigenen Bereich zugreifen. Der normale Anwender kann den internen Speicherbereich nicht einsehen.

Außerdem muss der externe Speicher nicht fest am Gerät installiert sein. Es kann also auch einfach kein externen Speicher vorhanden sein. In so einem Fall muss eine empfangene Datei im internen Speicher abgelegt werden. Ob der externe Speicher verwendbar ist, lässt sich über die Klasse Environment mit der Methode getExternalStorageState() ermitteln. \citep{on:environment}

\subsubsection*{Intents und Broadcastreceiver}

Intents sind Nachrichten zur Kommunikation zwischen den Komponenten innerhalb einer Anwendung und auch zwischen verschiedenen Anwendungen. Es handelt sich hierbei um ein asynchrones Kommunikationsmittel. \citep[S. 30f]{gargenta}

Ein Broadcastreceiver (Interface) kann eine Intent empfangen und anschließend als Reaktion den Code seine onReceive() Methode ausführen. Dafür muss sich der entsprechende Receiver für eine bestimmte Intent-Art anmeldet. \citep[S. 34f]{gargenta} Eine Intent kann sich durch sogenannte Action definieren lassen.

Auf diesem Benachrichtigungskonzept basiert die Kommunikation zwischen dem BluetoothService und den mit ihm kommunizierenden Activities. Außerdem werden Intents zum Start von Activities und Service verwendet.

\subsubsection*{Benachrichtigungen}

Zur Kommunikation mit dem Anwender besitzt Android eine Benachrichtigungsleiste (meistens am oberen Bildschirmrand). Eine Benachrichtung ist dort sichtbar als kleines Symbol. Intuitiv kann man die Benachrichtigungsleiste durch Wischen auf dem Bildschirm maximieren und dann die Details zu den Benachrichtigungen einsehen. \citep{on:notification}

Benachrichtigungen werden zuerst mit einem NotificationCampat.Builder gebaut und dann über den SystemService NotficationManager versandt. Durch Integrieren einer Intent lässt sich zum Beispiel eine Activity starten, wenn die Benachrichtigung angeklickt (angetippt) wird. \citep{on:notification-create}

Notifications in Capood zeigen dem Anwender an, dass er einen Text in die Zwischenanlage kopiert hat oder dass er eine neue Nachricht empfangen hat.

\subsection{Fortschritt}

Der erste Release fand zur Evaluation statt. Bis zu diesem Zeitpunkt wurde die Releasestufe 0.8 erreicht. Es wurden allerdings auch schon inhaltlich Teile der Stufe 1.0 erfüllt. Android selbst bietet die View Action. Diese wird verwendet, um Dateien anzuzeigen. Alle für diese Datei geeigneten Programme melden sich, sobald eine View Action per Intent ausgesendet wird. Der Anwender kann dann ein Programm auswählen und ggf. auch als Standardprogramm festlegen.

Für den vollständigen Release 1.0 fehlt allerdings eine Dateiverwaltung (0.9) von empfangenen Dateien. Dafür sollten zumindest triviale Basisfunktionalitäten wie das Löschen, das Umbennnen und das Verschieben von empfangen Dateien implementiert werden.

Nach dem erfolgreichen Release 1.0 folgen die Implementierung weiterer Übertragungstechniken und die Mehrsprachigkeit. Bis jetzt ist die grafische Oberfläche in englischer Sprache realisiert worden. Dafür bietet Android die Möglichkeit sogenannte Resources zu verwenden, die in XML-Dateien angelegt werden. Ein Teil der Resources sind die Strings. Über String lässt sich die Mehrsprachigkeit einer App realisieren, indem man mehrere String-Sätze für verschiedene Sprachen anlegt. \citep{on:languages}

Die nächste Übertragungstechnik, die integriert werden sollte, ist NFC. Sie könnte, sofern Sender und Empfänger über NFC verfügen, die Usability verbessern. Außerdem erweitert Android in den neueren Releaeses (ab API Level 16) NFC um eine Funktionalität, bei der bei Bedarf auf andere Übertragungstechniken automatisch umgeschaltet wird, um die Übertragungsbandbreite zu maximieren. \citep{on:andronfc}

\section{Evaluation}

Der fertige Prototyp (Release 0.8) sollte auf festgelegte Fragestellungen evaluiert werden. Dies sollte unabhängig und anonym außerhalb des Entwicklungsteams stattfinden. Um somit möglichst viele Tester in die Evaluation einbeziehen zu können, wurde auf eine Online-Umfrage gesetzt.

Als Anbieter für die Online-Umfrage dient die Website www.haekchen.at. Es ist eine kostenlose Seite zu Umfragen- und Evaluierungszwecken, wo man ohne umfangreiche Registrierung und Vorkenntnisse leicht einen Umfragebogen erstellen kann. Jede Frage kann mit verschiedenen Beantwortungsvarianten versehen werden, wie zum Beispiel ein Ranking (ein bis fünf Sterne), Checkboxen für geschlossene Fragestellungen und offene Fragen mit freier Texteingabe. Außerdem bietet die Seite an, die Umfrage zu bearbeiten, die Reihenfolge der Fragen und auch ihre Antworten leicht abrufen zu können. Die Veröffentlichung erfolgt über einen Link, einem html-Code oder einem Post in die sozialen Netzwerke.

\begin{figure}[H]
	\includegraphics[scale=0.7]{bilder/fragebogen}\centering
	\caption{Ausschnitt aus dem Fragebogen}
	\begin{footnotesize}
	Quelle: Screenshot (http://www.haekchen.at/haekchen/fragebogen.asp?uid=23031\&id=1 (29.07.13))
	\end{footnotesize}
	\label{fig:fragebogen}
\end{figure}

Der Fragebogen für Capood bestand auf zwölf Fragen mit einem Sterne-Ranking und einer offenenen Frage mit Freitext (siehe Abbildung \ref{fig:fragebogen}). Dabei ging es um zwei hauptsächliche Gesichtspunkte: der funktionale und der nicht-funktionale Teil der Applikation.



\begin{table}
	\rowcolors{1}{white}{gray!10}	
    \begin{tabularx}{\textwidth}{Xc}
		\toprule[2pt] Frage & arithm. Mittel \\
		\midrule[1pt]Wie war ihr erster Eindruck? & 2,78 \\
		Wie bewerten Sie den Funktionsumfang der App & 2,56 \\
		Wie bewerten Sie die Nützlichkeit der App.? & 2,67 \\
		Wie bewerten Sie die BluetoothTechnik als Übertragungsmöglichkeit? & 2,78 \\
		Wie bewerten Sie das Aussehen der App? & 2,89 \\
		Wie bewerten Sie die Übersicht der App? & 3,56 \\
		Wie bewerten Sie den Umgang mit der App? & 3,11 \\
		Wie bewerten Sie die Navigation in der App.? & 3,00 \\
		Wie bewerten Sie die Fehleranfälligkeit der App? & 2,33 \\
		Wie bewerten Sie die Umsetzung des Copy\&Paste Konzeptes? & 3,22 \\
		Wie bewerten Sie die Kommunikation der App mit dem Nutzer? & 2,22 \\
		Wie ist Ihr Gesamteindruck? & 2,89 \\
   	 	\bottomrule[2pt]
    \end{tabularx} 
	\caption{Bedienungskonzepte Senderseite }
\end{table}

Der funktionale Teil sollte die Funktionalität unserer Applikation einhergehend mit der Technik Bluetooth und der Fehleranfälligkeit der App bewerten. Im nicht-funktionalen Teil wurden Design- und Konzeptfragen gestellt, die auf die Gestaltung und Bedienbarkeit der Applikation prüfen sollten.

Die Verbreitung des Releasetypen erfolgte über unser Projektmanagementtool Codeplex, welches einen Downloadbereich für fertige Releases bietet.

Dafür haben wir aus unserem vorhandenen Projekt in ein APK (Applikation Package File) exportiert. Das ist ein compiliertes Dateiformat von Android, welches auf einem Android Gerät ausführbar ist und Installationsanweisungen, besitzt. APK Dateien sind paketiert, ähnlich mit ausführbaren .jar-Dateien bei herkömmlichem Java.

Eine solche Datei konnten die Testnutzer per Downloadlink auf ihr Smartphone herunterladen und installieren. Somit konnten wir den Weg über den Google Playstore umgehen, was aber leider auf einigen Geräten zu Problemen mit ihrer Firewall führte, da unsere Applikation als Schadsoftware erkannt und gesperrt wurde. Dennoch gab es bisweilen über 70 Downloads (Stand: 30.07.2013).

Die Bewertung der Fragen liegt durchschnittlich um drei von fünf Sternen und wurde bislang von neun Teilnehmern durchgeführt. Positiv bewerten die Nutzer die Übersicht in der Applikation und das von uns umgesetzte Copy\&Paste Konzept. Das deutet auf eine gute Zielerreichung hin. Auffallend negativ werden die Fehleranfälligkeit und die Kommunikation der App mit dem Nutzer bewertet. Da die App allerdings fast gar nicht durch die gängigen Softwaretestmethoden getestet wurde, ist so ein Ergebnis nachvollziehbar.

Ein Befragter schrieb im Freitext, dass er sich den Versand von Dateien wünscht. Da noch keine Bedienungsanleitung existiert und keine direkten Hinweise auf die Möglichkeit, Dateien zu versenden, gegeben sind, schien dem Befragten diese Funktionalität verborgen zu bleiben. Der Dateiversand sollte in einem kommenden Release über die grafische Oberfläche besser ersichtlich werden und eine Bedienungsanleitung erstellt werden, welches auch im Ausblick einen Eintrag findet.

\section{Fazit \& Ausblick}\label{fazit}

Das Studienprojekt war erfolgreich. Die Zielvereinbarung zum Leistungsumfang des Prototypen wurde eingehalten. Vorgabe war es, einen Prototypen zu entwickeln, der zwei Geräte verbindet und den einfachen Versand von Texten zulässt. Dies wurde übertroffen mit der Funktionalität Dateien verschicken und speichern zu können.

Das Projektteam kann einen großen Wissenszuwachs verzeichnen. Vorhandene Kenntnisse in der Programmiersprache Java konnten ausgebaut werden. Ergänzend dazu kommt das Wissen über die Entwicklung von Android-Apps. Das umfasst die Architektur, die Klassenbibliothek und den Vorgang der Entwicklung selbst, zum Beispiel die Virtualisierung von Android-Geräten um Testgeräte bereitzustellen.

Außerdem konnten Kenntnisse mit dem Umgang von xml-Elementen und der Bluetooth Funktionsweise gewonnen werden. Es wurde auch eine Erweiterung des Wissens über das Android Betriebssystem verzeichnet.

Android stellt eine ausführliche Wissensdatenbank für alle Entwickler bereit. Sie enthält Tutorials zu allen wichtigen Themen wie Architektur, dem Design, der Klassenbibliothek bis hin zur Veröffentlichung im hauseigenen Google Playstore.

Es gibt noch nicht so viel Fachliteratur, da Android selbst noch verhältnismäßig jung ist. Außerdem sind die Fachbücher schnell veraltet, da Android teilweise signifikante Veränderungen durchlebt hat und wahrscheinlich auch zukünftig durchleben wird (zum Beispiel der Sprung von Android 2 nach Android 4). An dieser Stelle hilft das Internet als modernes, flexibles Informationsmedium. Selbst aktuellste Probleme und Neuerungen wurden hier schon besprochen. Vor allem spezielle Fachforen zur Programmierung, wie zum Beispiel \url{www.stackoverflow.com}, bieten einem Neuling eine große Hilfestellung durch vorhandene Themen und gegebenenfalls auch durch Erstellung von Anfragen und deren Beantwortung durch die gigantische Community.

Organisatorisch hat das Projekt viel Zeit in Anspruch genommen, da selbst Grundwissen über die App-Entwicklung erst durch Recherche angeeignet werden musste. Das Entwicklerteam stellt allerdings fest, dass diese Zeit eine wertvolle Investition für zukünftige Projekte ist.

Die Erfahrungssammlung beschränkt sich nicht nur auf Android-spezifische Inhalte, sondern auch auf Aspekte des Projektmanagements. So ist bei einem Projekt dieser Größe ein Projektmanagementtool (hier Codeplex) nicht wegzudenken. Es vereint Versionskontrolle, Dokumentationswerkzeug und Kommunikation. Damit einhergehend wurden auch unsere Kenntnisse mit dem Umgang von UML Werkzeugen und Inhalten gefestigt.

Die Entwicklung ist allerdings auch noch nicht abgeschlossen. Es fehlen noch einige Funktionalitäten, um den Release 1.0 zu veröffentlichen. Gegenwärtig ist Release 0.8 fertig und wurde evaluiert.

Durch die Evaluation und die Rückmeldungen der Nutzer wurden wir auf Probleme und Verbesserungsvorschläge hingewiesen, die es in der weiteren Entwicklung und dem nächsten Prototypen umzusetzen gilt.

Dabei geht es in erster Linie um ein ansprechenderes Design und auch eine kurze Anleitung zum Dateiversand. Die Funktionalität war für einen Nutzer wahrnehmbar, da sie nicht explizit aus der App heraus gestartet werden kann. Auch wurde die Kommunikation der Applikation mit dem Nutzer bemängelt, welche zweifellos für ein intuitives Konzept von großem Nutzen ist. Für die Verbesserung der genannten Punkte ist ein Refactoring des Codes und eine weitere Veränderung der Versionsplanung notwendig. Die Schritte sollte vor der weiteren Entwicklung in der Releaseplanung angepasst und ergänzt werden.

Nach Version 1.0 würden wichtige Erweiterungen folgen, die die Tauglichkeit zur Vermarktung fördern würden, wie zum Beispiel die Mehrsprachigkeit und die Implementierung weiterer Übertragungstechnologien.

Es wäre denkbar das Projekt in einem kommenden Studienprojekt weiter zu entwickeln und auch fertig stellen, dabei würde sich die Entwicklung aber eher auf eine ideenreiche grafische Oberfläche und die Erweiterung der möglichen Übertragungstechniken beschränken. 

\renewcommand\section{\stdsection}
%*****************************************
%*********************INHALT**************
%**********************ENDE***************
\clearpage
\pagenumbering{Roman}
%römische Seitennummer vom Anfang zurückholen
%\stepcounter{romCount}
\setcounter{page}{\value{romCount}}

%%%%%%%%%%%%%%%%%%%%%%%%%%
% Literatur
%%%%%%%%%%%%%%%%%%%%%%%%%
\bibliographystyle{plain}
\bibliography{literatur}
\nocite{*}
%
\bibliographystyleinternet{plain}
\bibliographyinternet{internet}
\nociteinternet{*}


%%%%%%%%%%%%%%%%%%%%%%%%%%
% Anhang
%%%%%%%%%%%%%%%%%%%%%%%%%

\section*{Anhang}
\addcontentsline{toc}{section}{Anhang}

\subsection*{Technologiestudie}\label{technostudie}

\begin{table}[H]
	\includegraphics[scale=0.8,angle=-90]{tabellen/techno1.pdf}\centering
	\caption{Technologiestudie I (mit Maßstab)}
\end{table}

\begin{table}[H]
	\includegraphics[scale=0.8,angle=-90]{tabellen/techno2.pdf}\centering
	\caption{Technologiestudie II}
\end{table}

\begin{table}[H]
	\includegraphics[scale=0.8,angle=-90]{tabellen/techno3.pdf}\centering
	\caption{Technologiestudie III}
\end{table}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Eidesstattliche Erklärung
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\clearpage
% Keine Nummerierung für diesen Teil
\section*{Ehrenwörtliche Erklärung}
\addcontentsline{toc}{section}{Ehrenwörtliche Erklärung}
% Keine Kopf- und Fußzeilen ausgeben
\thispagestyle{empty}
% Aber trotzdem ins Inhaltsverzeichnis aufnehmen
%\addcontentsline{toc}{section}{Eidesstattliche Erklärung}

% Hier der offizielle Text der eidesstattlichen Erklärung
Wir erklären ehrenwörtlich:
\begin{enumerate}
	\item dass wir unsere Studienarbeit selbstständig verfasst haben,
	\item dass wir die Übernahme wörtlicher Zitate aus der Literatur sowie die Verwendung der Gedanken anderer Autoren an den entsprechenden Stellen innerhalb der Arbeit gekennzeichnet haben,
	\item dass wir unsere Studienarbeit bei keiner anderen Prüfung vorgelegt haben.
\end{enumerate}
Wir sind uns bewusst, dass eine falsche Erklärung rechtliche Folgen haben wird.
% Etwas Abstand für die Unterschrift
\vspace{2cm}

% Hier kommt die Unterschrift drüber
\begin{tabular}{lp{4em}l} 
 \hspace{5cm}   && \hspace{4cm} \\\cline{1-1}\cline{3-3} 
 Ort, Datum     && \studentNameA \\\\
 \hspace{5cm}   && \hspace{4cm} \\\cline{1-1}\cline{3-3} 
 Ort, Datum     && \studentNameB \\\\
 \hspace{5cm}   && \hspace{4cm} \\\cline{1-1}\cline{3-3} 
 Ort, Datum     && \studentNameC
 
\end{tabular}

\end{document}